﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestSituacionMantenimientoDAO
    {
        private SituacionMantenimientoDAO situacionMantenimientoDao=new SituacionMantenimientoDAO();
        [Test]
        public void TestCrear()
        {
            Situacion_Mantenimiento SituacionMantenimientoNuevo = new Situacion_Mantenimiento();
            SituacionMantenimientoNuevo.Codigo_Situacion_Mantenimiento =2;
            SituacionMantenimientoNuevo.Descripcion = "Pendiente";
            SituacionMantenimientoNuevo.Estado = "Activo";

            // 2. Llamada al método del DAO a probar
            Situacion_Mantenimiento SituacionMantenimientoCreado = situacionMantenimientoDao.Crear(SituacionMantenimientoNuevo);
            // 4. Implementar las validaciones
            Assert.NotNull(SituacionMantenimientoCreado);
            Assert.AreEqual(SituacionMantenimientoNuevo.Codigo_Situacion_Mantenimiento, SituacionMantenimientoCreado.Codigo_Situacion_Mantenimiento);
        }

        [Test]
        public void TestModificar()
        {
            Situacion_Mantenimiento SituacionMantenimientoNuevo = new Situacion_Mantenimiento();
            SituacionMantenimientoNuevo.Codigo_Situacion_Mantenimiento = 2;
            SituacionMantenimientoNuevo.Descripcion = "Pendiente";
            SituacionMantenimientoNuevo.Estado = "Activo";

            // 2. Llamada al método del DAO a probar
            Situacion_Mantenimiento SituacionMantenimientoCreado = situacionMantenimientoDao.Modificar(SituacionMantenimientoNuevo);
            // 4. Implementar las validaciones
            Assert.NotNull(SituacionMantenimientoCreado);
            Assert.AreEqual(SituacionMantenimientoNuevo.Codigo_Situacion_Mantenimiento, SituacionMantenimientoCreado.Codigo_Situacion_Mantenimiento);
        }

        [Test]
        public void TestObtener()
        {
            int _cod_SituacionMantenimiento;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_SituacionMantenimiento = 1;
            Situacion_Mantenimiento SituacionMantenimientoConsulta = situacionMantenimientoDao.Obtener(_cod_SituacionMantenimiento);

            // 4. Implementar las validaciones
            Assert.NotNull(SituacionMantenimientoConsulta);
            Assert.AreEqual(SituacionMantenimientoConsulta.Codigo_Situacion_Mantenimiento, _cod_SituacionMantenimiento);
            Assert.IsNotNull(SituacionMantenimientoConsulta.Descripcion);
        }


        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Situacion_Mantenimiento oSituacionMantenimiento = new Situacion_Mantenimiento();
            oSituacionMantenimiento.Codigo_Situacion_Mantenimiento = 1;
            // 2. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                situacionMantenimientoDao.Eliminar(oSituacionMantenimiento);
            });
            Assert.DoesNotThrow(delegate
            {
                situacionMantenimientoDao.Eliminar(oSituacionMantenimiento);
            });

            // 3. Implementar las validaciones
            Assert.NotNull(oSituacionMantenimiento);
            Assert.NotNull(oSituacionMantenimiento.Codigo_Situacion_Mantenimiento);

        }


    }
}